package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.domain.UserInfo;
import com.itheima.commons.vo.backstage.DistributionVo;
import com.itheima.commons.vo.backstage.SummaryVo;
import com.itheima.commons.vo.backstage.UsersVo;

import java.util.List;
import java.util.Map;

/**
 * @author yaohu
 * @date 2021/12/5
 * @Version 1.0
 * @describe
 */
public interface UserInfoApi {

    /**
     * 添加用户信息到数据库中
     *
     * @param userInfo
     */
    void addUserInfo(UserInfo userInfo);

    /**
     * 更新日志
     *
     * @param uid
     * @param pictureUrl
     */
    void updateLogo(Long uid, String pictureUrl);

    /**
     * 根据userId查询出userId
     *
     * @param userId
     * @return 今日佳人信息
     */
    UserInfo findUserInfoByUserId(Long userId);

    /**
     * 根据用户userIds
     * 查询出对应推荐用户的详细信息
     *
     * @param userInfo 用户筛选的信息
     * @param userIds
     * @return 推荐人集合
     */
    Map<Long, UserInfo> findUserInfoByUserIds(UserInfo userInfo, List<Long> userIds);

    /**
     * 根据用户userIds
     * 查询出对应推荐用户的详细信息
     *
     * @param userIds
     * @return
     */
    Map<Long, UserInfo> findUserInfoByUserIds(List<Long> userIds);

    /**
     * 根据评论人id查询评论人昵称
     * @param userId
     * @return
     */
    String findNickNameByUserId(Long userId);

    /**
     * 根据时间段  查询注册用户分布，行业top、年龄、性别、地区
     * @param startTime  条件筛选开始时间
     * @param endTime    条件筛选结束时间
     * @return
     */
    DistributionVo distribution(Long startTime, Long endTime);

    /**
     *
     * @param startTime
     * @param endTime
     * @return
     */
    UsersVo users(Integer type, Long startTime, Long endTime);

    /**
     *
     * @return
     */
    SummaryVo summary();

    /**
     * 统计用户数量
     * @return 总数
     */
    Integer queryUserInfoCount();


    List<UserInfo> findUserByUserIds(List<Long> userIds);
}
